/**
 * 选择排序算法,时间复杂度为O(n^2)
 * @author firebroo
 *
 */
public class ChooseSort {
	public void selectionsort(int[] data){
		int i,j,least,tmp;                                    //least保存一趟比较最小值数组下标，tmp临时变量用于交换数组元素
		for(i=0;i<data.length-1;i++){                    
			for(j=i+1,least=i;j<data.length;j++){         //初始化least为下标为0的数组值，从下标为1开始遍历数组和下标为0进行对比
				if(data[j]<data[least]){                  
					least=j;
				}
			}
			tmp=data[least];                              //一次比较结束，得到最小元素下标值，将最小元素的和第一个元素交换
			data[least]=data[i];
			data[i]=tmp;
		}
	}
	
	/**
	 * 测试排序算法
	 * @param args
	 */
	public static void main(String[] args){
		int[] data={22,11,23,3,5,7,4};
		ChooseSort test=new ChooseSort();
		test.selectionsort(data);
		for(int i=0;i<data.length;i++){
			System.out.println(data[i]);
		}
	}
}

